Install Cuda-9.0 on Ubuntu 16.04

Posted by Sz Zheng on 2018-12-01

从安装Ubuntu 16.04到降低内核版本安装Cuda-9.0的方法

  • 作者:zsz
  • 时间:2018-12-01-20:18
    公元2018年12月1日,上午10时左右,开完分享组会的我开始调戏一台叫做kawaii的电脑,想给她安装个cuda 9.0,不想历经种种曲折,甚至将kawaii的内核损坏,几欲放弃,最终在王者峡谷沉思两个多小时后,我还是选择直面遍体鳞伤的kawaii,在牺牲了另外72000秒后,终于顺利地达到了目标,此事件影响重大,特在此记录,并开设本人第一篇博客,用于记录类似奇闻轶事。

1. 安装Ubuntu 16.04

这个不是重点,略写略写
  • 安装UltraISO
  • 下载Ubuntu 16.04的磁盘映像
  • 用UltraISO写磁盘映像到一个U盘里
  • 把U盘插在kawaii上,然后傻瓜式操作就好了
  • 分区就用默认的,毕竟就这么一个机器一个系统,没啥要特别注意的

2. 降级操作系统内核版本

Cuda-9.0只支持Linux 4.4版本的内核,我安装的Ubuntu内核是4.15的,需要降级

这一部分参考的这篇文章

  • 备份源配置文件
    sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak
  • 用编辑器打开源配置文件
    sudo vim /etc/apt/sources.list
  • 在文件最后面增加一行并保存
    deb http://security.ubuntu.com/ubuntu trusty-security main
  • 执行以下命令更新配置
    sudo apt-get update
  • 安装新内核
    sudo apt-get install linux-image-extra-4.4.0-98-generic
  • 执行以下命令查看是否安装成功
    dpkg -l | grep linux-image
  • 用编辑器打开 grub 配置文件
    sudo vim /etc/default/grub
  • GRUB_DEFAULT=0 改为 GRUB_DEFAULT=“1>6”
    这里用的的“1>6”指的是启动顺序,数的方法是打开 /boot/grub/grub.cfg,然后找到 menuentry 后的一系列启动选项,从0开始数,要注意在高级选项里是有子选项的,我这里的高级选项是1号,子选项里第6号是4.4.0-98,所以写了“1>6”
    Alt text
  • 保存退出,然后执行以下命令更新 Grub 引导
    sudo update-grub
  • 然后重启就可以进入新内核了
    uname -r查看当前内核版本

3. 安装 Cuda-9.0

  • 下载 Cuda-9.0 runfile
    官网下载
  • 给 kawaii 安装 ssh-server
    sudo apt-get install openssh-server
  • 启动 ssh 服务
    sudo service sshd start
  • 使用公钥登陆方式,将信任的公钥放在/home/alice/.ssh/authorized_keys
    sudo vim /etc/ssh/sshd_config
  • 修改这个文件,禁止 root 远程登陆和普通用户密码登陆
  • 之后选择用另一台电脑 ssh 连接 kawaii
  • 关闭 nouveau
    echo "blacklist nouveau" >>/etc/modprobe.d/blacklist.conf
    echo "options nouveau modeset=0" >>/etc/modprobe.d/blacklist.conf
    rmmod nouveau
  • 检查一下是否关闭成功了,没有输出就成功了,必要时重启试试,有的方法说是用 update-initramfs -u,这个方法在内核降级后是不好使的
    lsmod | grep nouveau
  • 准备 gcc, 看看 lspci | grep -i nvidia到底能不能装 Cuda
  • 安装 kernel header
    sudo apt-get install linux-headers-$(uname -r)
  • 关闭图形界面
    sudo /etc/init.d/lightdm stop
    sudo init 3
  • 开始正式安装
    sudo sh cuda_9.0.176_384.81_linux.run
  • 然后按照提示来就行

写到这里就完事了,作为第一篇博文,添加一个搭建博客的指导链接在这里

Ubuntu自动更新会导致内核版本变更,上述方法就会指向错误的内核,因此可以禁止内核自动更新:
打开文件
sudo vim /etc/apt/apt.conf.d/10periodic
第一行改成0
APT::Periodic::Update-Package-Lists "0"
此外,用
sudo apt-mark hold linux-image-4.4.0-98-generic
sudo apt-mark hold linux-image-extra-4.4.0-98-generic
可以保留对应4.4.0-98内核,取消就用unhold就好